Computer programs are groups of instructions and organizational constructs that govern actions to be performed by a computer or other processor-based device. When a computer program is executed on computer hardware, the computer will behave in a predetermined manner by following the instructions of the computer program. Accordingly, the computer becomes a specialized machine that performs the tasks prescribed by the instructions. Computer programs can be generated by programmers manually and/or with assistance of development tools. Alternatively, programs can be created automatically by other programs.
A significant class of programs include programs that create other programs. Everyday programmers employ compilers, form designers and/or database application generators, which are examples of this class of programs. Further, games and other graphic-intensive applications dynamically create miniature programs that run concurrently inside graphics co-processors. In addition, business analysis, reporting and visualization tools often create other programs for specialized purposes as a side effect. Still further yet, a web server application that embeds scripts in HTML (HyperText Markup Language) pages is a program that creates a program (HTML page) that creates another program (scripts).
Generally speaking, the technology for creating programs is code generation. The input information for code generation can come from any number of sources. For instance, input information can be embedded statically in a code generator, housed in files or databases or provided by direct user input such as mouse actions in a designer tool. The output of code generation can be designed to execute immediately after being created, under control of the program that created it, or alternatively saved for later execution independent of the code generator.
Whether a standard program or a program that creates programs, application programming interfaces (APIs) can be utilized to aid development. APIs are source code tools that provide a set of services, routines, functions or the like employable by a computer program. These tools provide a convenient mechanism to extend program functionality and/or provide fundamental program building blocks. For example, code generation APIs can be employed to facilitate generation of programs that create programs.